Android扫码连接WIFI实现 您所在的位置:网站首页 安卓查看已经连接wifi密码 没二维码怎么办 Android扫码连接WIFI实现

Android扫码连接WIFI实现

2024-07-14 03:26| 来源: 网络整理| 查看: 265

0,目标

        APP中实现扫WIFI分享码自动连接WIFI功能

1,前提条件

        设备需要有个扫码器(摄像头拍照识别也行),APP调用扫码器读取WIFI连接分享码。

2,增加权限

        在AndroidManifest.xml中增加权限

3,参数检查

        扫码成功后,对内容进行一个基本的判断,确认扫码数据中有P和T的参数

//WIFI连接 if (strResult.contains("P:") && strResult.contains("T:")) {// 自动连接wifi ConnectWifi(strResult); } 4,WIFI连接调用 private void ConnectWifi(String strResult) { //取连接参数 String passwordTemp = strResult.substring(strResult .indexOf("P:")); password = passwordTemp.substring(2, passwordTemp.indexOf(";")); String netWorkTypeTemp = strResult.substring(strResult .indexOf("T:")); netWorkType = netWorkTypeTemp.substring(2, netWorkTypeTemp.indexOf(";")); String netWorkNameTemp = strResult.substring(strResult .indexOf("S:")); netWorkName = netWorkNameTemp.substring(2, netWorkNameTemp.indexOf(";")); WifiAdmin wifiAdmin = new WifiAdmin(MainActivity.this); if (!wifiAdmin.mWifiManager.isWifiEnabled()) { Toast.makeText(this, "开启wifi设置", Toast.LENGTH_LONG).show(); wifiAdmin.openWifi(); } int net_type = 0x13; if (netWorkType.compareToIgnoreCase("wpa") == 0) { net_type = WifiAdmin.TYPE_WPA;// wpa } else if (netWorkType.compareToIgnoreCase("wep") == 0) { net_type = WifiAdmin.TYPE_WEP;// wep } else { net_type = WifiAdmin.TYPE_NO_PASSWD;// 无加密 } boolean bConnect = wifiAdmin.addNetwork(netWorkName,password,net_type);//连接 if(bConnect) { Toast.makeText(this, "网络连接成功", Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, "网络连接失败", Toast.LENGTH_LONG).show(); } }

5,WIFI连接类

import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.util.Log; import java.util.List; /** * Created by cmos. */ public class WifiAdmin { private static String TAG="WifiManger"; public static final int TYPE_NO_PASSWD = 0x11; public static final int TYPE_WEP = 0x12; public static final int TYPE_WPA = 0x13; public WifiManager mWifiManager; private WifiInfo mWifiInfo; public WifiAdmin(Context context){ mWifiManager= (WifiManager) context.getSystemService(Context.WIFI_SERVICE); // mWifiInfo = mWifiManager.getConnectionInfo(); } // 添加一个网络并连接 public boolean addNetwork(WifiConfiguration wifi){ int netId=mWifiManager.addNetwork(wifi); return mWifiManager.enableNetwork(netId,true); } public boolean addNetwork(String ssid, String passwd, int type) { if (ssid == null || passwd == null || ssid.equals("")) { Log.e(TAG, "addNetwork() ## nullpointer error!"); return false ; } if (type != TYPE_NO_PASSWD && type != TYPE_WEP && type != TYPE_WPA) { Log.e(TAG, "addNetwork() ## unknown type = " + type); } return addNetwork(createWifiInfo(ssid, passwd, type)); } public WifiConfiguration createWifiInfo(String SSID, String password, int type) { Log.e(TAG, "SSID = " + SSID + "## Password = " + password + "## Type = " + type); WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; WifiConfiguration tempConfig = this.IsExsits(SSID); if (tempConfig != null) { //如果已存在该SSID的wifi mWifiManager.removeNetwork(tempConfig.networkId); } // 分为三种情况:1没有密码2用wep加密3用wpa加密 if (type == TYPE_NO_PASSWD) {// 没有密码 config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } else if (type == TYPE_WEP) { // wep加密 config.hiddenSSID = true; config.wepKeys[0] = "\"" + password + "\""; config.allowedAuthAlgorithms .set(WifiConfiguration.AuthAlgorithm.SHARED); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); config.allowedGroupCiphers .set(WifiConfiguration.GroupCipher.WEP104); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } else if (type == TYPE_WPA) { // WPA加密 config.preSharedKey = "\"" + password + "\""; config.hiddenSSID = true; config.allowedAuthAlgorithms .set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.TKIP); // config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.CCMP); config.status = WifiConfiguration.Status.ENABLED; } return config; } //检测该SSID是否已存在 private WifiConfiguration IsExsits(String SSID) { List existingConfigs = mWifiManager.getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + SSID + "\"")) { return existingConfig; } } return null; } // 打开WIFI public void openWifi() { if (!mWifiManager.isWifiEnabled()) { mWifiManager.setWifiEnabled(true); } } // 关闭WIFI public void closeWifi() { if (mWifiManager.isWifiEnabled()) { mWifiManager.setWifiEnabled(false); } } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有